package com.bosssoft.hr.train.j2se.example.collection;

import com.bosssoft.hr.train.j2se.example.pojo.User;
import lombok.extern.slf4j.Slf4j;

import java.util.Collections;
import java.util.Comparator;
import java.util.Set;
import java.util.TreeSet;

/**
 * @description: 演示如何使用 比较器排序
 * @author: Administrator
 * @create: 2020-05-28 21:56
 * @since
 **/
@Slf4j
public class TreeSetDemo extends BaseCollectionDemo {
    /**
     * 注入比较器
     */
   private Set<User> userTreeSet=new TreeSet<>(new Comparator<User>() {
        @Override
        public int compare(User o1, User o2) {
            /**
             *  0 代表相等  负数说明o1小于o2
             */
            return o1.getCode().compareTo(o2.getCode());
        }
    });

    /**
     * 排序方法 依赖排序比较器实现
     * @param array
     * @return
     */
    private User[] sort(User[] array) {

        if(null!=array && array.length>0){
            //添加时set中的比较器会自动比较
            Collections.addAll(userTreeSet,array);
            User[] users= userTreeSet.toArray(new User[userTreeSet.size()]);
            log.info(Constraint.LOG_TAG+"{}","排序成功");
            return users;
        }else
            return array;
    }

    /**
     * 按作业要求显示被比较器排序后的数组观察是否正确
     */
    public void showSortResult(){
        // 父类方法构建数据
        User[] users=generateData();
        //排序
        sort(users);
        // 输出
        for(User user :users){
            log.info("用户信息",user);
        }
    }

}
